type EnvType = 'development' | 'production' | 'intranet'

interface ApiConfig {
  baseURL: string
  urlPrefix?: string
}

interface Config {
  [key: string]: ApiConfig
}

export const API_CONFIG: Config = {
  // 外网地址，用于本地开发去调测
  development: {
    // 前端本地开发环境，需要使用相对路径，绝对路径会有跨域问题，访问不到
    baseURL: 'https://tsapiv1-test.shasoapp.com',
    // baseURL: 'https://tsapiv1-test.shasoapp.com',
  },
  production: {
    baseURL: 'https://tsapiv1.shasoapp.com',
  },
  // 内网地址，用于发布测试环境平台和线上环境平台使用
  intranet: {
    baseURL: '',
    // 提供NGINX使用
    urlPrefix: '/web/fluenty',
  },
}

export const getBaseUrl = () => {
  // 获取环境变量
  const env = import.meta.env.VITE_ENV || 'development'
  const isPlatform = import.meta.env.VITE_IS_PLATFORM === 'true'

  // 如果是平台部署环境，使用内网地址
  if (isPlatform) {
    return API_CONFIG.intranet.baseURL + (API_CONFIG.intranet?.urlPrefix ?? '')
  }

  // 其他情况使用对应环境的外网地址
  return API_CONFIG[env as EnvType].baseURL + (API_CONFIG[env as EnvType]?.urlPrefix ?? '')
}

export const getEnvironmentInfo = () => {
  return {
    env: import.meta.env.VITE_ENV,
    mode: import.meta.env.MODE,
    baseUrl: getBaseUrl(),
    isDevelopment: import.meta.env.VITE_ENV === 'development',
    isProduction: import.meta.env.VITE_ENV === 'production',
    isPlatform: import.meta.env.VITE_IS_PLATFORM === 'true',
  }
}

// 用于调试
if (import.meta.env.DEV) {
  console.log('Environment Info:====', getEnvironmentInfo())
}
